﻿#ifndef FILEWIDGET_H
#define FILEWIDGET_H

#include <QWidget>
#include "protocol.h"
#include <QListWidgetItem>
#include <QMenu>

namespace Ui {
class FileWidget;
}

class FileWidget : public QWidget
{
    Q_OBJECT

public:
    explicit FileWidget(QWidget *parent = nullptr);
    ~FileWidget();

    QString getFileCategory(const QString& fileName);

    void flushFiles();

    void handleCreateDirRespond(PDU* pdu);

    void handleUpdateFileList(const PDU * pdu);

    void handleDeleteFileRespond(const PDU* pdu);

    void handleRenameFile(const PDU* pdu);

    void handleEnterDir(const PDU * pdu);

    void handleUploadFile(PDU* pdu);

    void handleUploadedFile(PDU* pdu);


private:
    Ui::FileWidget *ui;

    QMenu* contextMenu = NULL;
    QAction* actionDelete = NULL;
    QAction* actionRename = NULL;
    QAction* actionDownload = NULL;

    QString m_strUploadFilePath;// 上传文件
    QString m_strDownloadDirPath;// 文件下载文件夹

    void initProgressBar();

private slots:
    void on_pbn_newFlloder_clicked();
    // 刷新文件夹
    void on_pbn_flush_clicked();

    // 右键显示菜单
    void slot_showContextMenu(const QPoint& pos);

    // 删除文件
    void slot_deleteFile();

    // 重命名文件
    void slot_renameFile();

    // 下载文件

    void slot_downloadFile();

    // 双击进入文件夹
    void on_listWidget_itemDoubleClicked(QListWidgetItem *item);
    void on_pbn_back_clicked();

    // 上传文件
    void on_pbn_upload_clicked();

    void slot_setProgressBarMaxValue(qint64 value);
    void slot_setProgressBarValue(qint64 value);
    void slot_showUploadStatus(QString status);
    void slot_showDownloadStatus(QString status);
};

#endif // FILEWIDGET_H
